
/**
 * 
 * @param {*} val 
 * @returns 
 * 生成一个唯一的值 如果 这个函数带了值就直接返回这个值
 */
export function onlyValue(val) {
    return val || Date.now() + parseInt((Math.random() * 1000000).toFixed()).toString()
}
/**
 * 
 * @param {*} o 
 * @returns 
 * 检查值的类型
 */
export function getClass(o) {
    //判断数据类型
    return Object.prototype.toString.call(o).slice(8, -1)
}
/**
 * 
 * @param {*} obj 
 * @returns 
 * 深度复制
 */
export function deepCopy(obj) {
    let result,
        oClass = getClass(obj)
    if (oClass == "Object") {
        result = {}
    } else if (oClass == "Array") {
        result = []
    } else {
        return obj
    }
    for (let i in obj) {
        let copy = obj[i]
        if (getClass(copy) == "Object") {
            result[i] = deepCopy(copy)
        } else if (getClass(copy) == "Array") {
            result[i] = deepCopy(copy)
        } else {
            result[i] = copy
        }
    }
    return result
}
/**
 * 
 * @param {*} value 
 * 复制内容 只能在浏览器中用
 */
export async function copyFn(value) {
    /*
        navigator.permissions 这个是防止手机中没有权限
    */
    if(navigator.clipboard&& navigator.permissions){
      await navigator.clipboard.writeText(text)
    }else{
        const textarea = document.createElement('textarea');
        textarea.value = text;
        textarea.style.position = 'fixed';
        textarea.style.opacity = '0';
        document.body.appendChild(textarea);
        textarea.select();
        const success = document.execCommand('copy');
        document.body.removeChild(textarea);
    }
}
/**
 * 
 * @param {*} amt 
 * @returns 
 * 将金额转换为会计中的计算规则
 */
export function formatAmt(amt) {
    //将字符串转换为会计中的记数方式
    const FORMAT_AMT_REG = /\B(?=(?:\d{3})+\b)/g
    return (parseFloat(amt || 0) || 0).toFixed(2).replace(FORMAT_AMT_REG, "$&,")
}
/**
 * 
 * @param {*} phone 
 * @returns 
 * 电话号码隐藏中间四位数字
 */
export function formatPhone(phone) {
    return phone.replace(/^(\d{3})(\d{4})(\d{4})/, "$1****$3")
}